# Suspense
Suspense é um recurso utilizado no React.js, sendo um recurso especial assim como o transition
e transition-group
, seu objetivo é ser um watcher do componente e ter as informações de carregamento. Por mais que podemos monitorar a criação de um componente pelo retorno do setup() sem a necessidade de recursos adicionais, o Suspense vem para utilizar isso de uma forma elegante e que facilite para os desenvolvedores.
Até o momento(17/12/2020), o recurso está em fase beta e não é recomendável para projetos finais.
# Utilização
<template>
<Suspense>
<template #default>
<ComponenteEsperado>
</template>
<template #fallback>
<ComponenteCarregando>
</template>
</Suspense>
</template>
De uma forma simples, o #default é o componente que será escutado e esperado em sua construção(finalização do hook onMounted), enquanto o #fallback é o componente que será carregado enquanto o
ComponenteEsperado
está sendo criado.Se o componente esperado executar um erro, podemos capturar e tratar este erro:
<script>
import { ref, onErrorCaptured } from 'vue';
setup () {
const error = ref(null);
onErrorCaptured(e => {
error.value = e
return true
})};
return { error }
</script>
- Lembrando que este erro retornado é genérico, tendo a necessidade de tratar o erro de alguma forma. Como a promise irá ficar infinitamente carregando, recomendamos utilizar o v-if/v-else com um erroHandler para conseguir exibir o erro sem que a promise continue a ser carregada.